package com.diandian.backend.product.controller;

import com.diandian.backend.product.param.*;
import com.diandian.backend.product.service.ProductOfflineInfoService;
import com.diandian.base.boot.starter.response.BaseResult;
import com.diandian.base.boot.starter.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


/**
 * [商品]线下商品信息表
 *
 * @author zyz diandian@qq.com
 * @since 1.0.0 2025-10-31
 */
@RestController
@RequestMapping("/offline/info")
public class ProductOfflineInfoController{

    @Autowired
    private ProductOfflineInfoService productOfflineInfoService;

    /**
    * 分页查询
    */
    @PostMapping("/page")
    public BaseResult page(@RequestBody ProductOfflineInfoPageParam param) {
        param.check();
        return ResultUtil.makeResult(productOfflineInfoService.page(param.toDTO()));
    }

    /**
     * 根据数据id查询详情
     */
    @PostMapping("/detail/id")
    public BaseResult getDetailById(@RequestBody ProductOfflineInfoDetailParam param) {
        param.queryByIdCheck();
        return ResultUtil.makeResult(productOfflineInfoService.getDetail(param.toDTO()));
    }

    /**
     * 根据商品编码查询详情
     */
    @PostMapping("/detail/product/code")
    public BaseResult getDetailByProductCode(@RequestBody ProductOfflineInfoDetailParam param) {
        param.queryByProductCodeCheck();
        return ResultUtil.makeResult(productOfflineInfoService.getDetail(param.toDTO()));
    }

    /**
     * 根据数据id删除数据
     */
    @PostMapping("/delete/id")
    public BaseResult deleteById(@RequestBody ProductOfflineInfoDeleteByIdParam param) {
        param.deleteByIdCheck();
        productOfflineInfoService.deleteById(param.getId(), param.getBelong());
        return ResultUtil.makeResult();
    }

    /**
     * 根据商品编码删除数据
     */
    @PostMapping("/delete/product/code")
    public BaseResult deleteByProductCode(@RequestBody ProductOfflineInfoDeleteByProductCodeParam param) {
        param.deleteByProductCode();
        productOfflineInfoService.deleteByProductCode(param.getCode(), param.getBelong());
        return ResultUtil.makeResult();
    }

    /**
     * 根据数据id更新数据
     */
    @PostMapping("/updateById")
    public BaseResult updateById(@RequestBody ProductOfflineInfoUpdateByIdParam param) {
        param.check();
        productOfflineInfoService.updateById(param.toDTO());
        return ResultUtil.makeResult();
    }

    /**
     * 根据数据id更新数据
     * 说明：针对目前业务的添加，主要将视频和图片进行拆分为多个字段
     */
    @PostMapping("/updateById/business")
    public BaseResult updateByIdBusiness(@RequestBody ProductOfflineInfoUpdateByIdBusinessParam param) {
        param.check();
        productOfflineInfoService.updateById(param.toDTO());
        return ResultUtil.makeResult();
    }

    /**
     * 新增
     */
    @PostMapping("/add")
    public BaseResult add(@RequestBody ProductOfflineInfoAddParam param) {
        param.check();
        productOfflineInfoService.add(param.toDTO());
        return ResultUtil.makeResult();
    }

    /**
     * 新增
     * 说明：针对目前业务的添加，主要将视频和图片进行拆分为多个字段
     */
    @PostMapping("/add/business")
    public BaseResult addBusiness(@RequestBody ProductOfflineInfoAddBusinessParam param) {
        param.check();
        productOfflineInfoService.add(param.toDTO());
        return ResultUtil.makeResult();
    }
}